<?php

class PdoUtilisateur extends PdoConnect {

    public function create(utilisateur $utilisateur) {
        try {
            $this->open();
            $sql = "INSERT INTO `utilisateur`(IDUTILISAT, PSEUDOUTILISAT, NOMUTILISAT, MOTDEPASSEUTILISAT,ADRESSEUTILISAT,CODEPOSTALUTILISAT,ADRESSEELECUTILISAT, SEXE, DATENAISSANCEUTILISAT) VALUES(?, ?, ?, ?, ?,?, ?, ?, ?)";

            $prep = $this->pdo->prepare($sql);

            $prep->bindValue(1, $utilisateur->getIdUtilisat(), PDO::PARAM_INT);
            $prep->bindValue(2, $utilisateur->getPseudoUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(3, $utilisateur->getNomUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(4, $utilisateur->getMotdePasseUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(5, $utilisateur->getAdresseUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(6, $utilisateur->getCodePostalUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(7, $utilisateur->getAdresseElecUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(8, $utilisateur->getSexe(), PDO::PARAM_STR);
            $prep->bindValue(9, $utilisateur->getDateNaissanceUtilisat(), PDO::PARAM_STR);


            $prep->execute();
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function readAll() {
        try {
            $this->open();
            $sql = "SELECT * FROM `utilisateur` ORDER BY PSEUDOUTILISAT";
            $prep = $this->pdo->prepare($sql);

            $prep->execute();
            $prep->setFetchMode(PDO::FETCH_ASSOC);


            return $prep;
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function readOne($IdUtilisat) {
        try {
            $this->open();
            $sql = "SELECT * FROM `utilisateur` WHERE IDUTILISAT=$IdUtilisat";
            $prep = $this->pdo->prepare($sql);

            $prep->execute();

            $utilisateur = new Utilisateur();
            $ligne = $prep->fetch(PDO::FETCH_OBJ);
            $utilisateur->setIdUtilisat($ligne->IDUTILISAT);
            $utilisateur->setPseudoUtilisat($ligne->PSEUDOUTILISAT);
            $utilisateur->setNomUtilisat($ligne->NOMUTILISAT);
            $utilisateur->setMotdePasseUtilisat($ligne->MOTDEPASSEUTILISAT);
            $utilisateur->setCodePostalUtilisat($ligne->CODEPOSTALUTILISAT);
            $utilisateur->setAdresseUtilisat($ligne->ADRESSEUTILISAT);
            $utilisateur->setSexe($ligne->SEXE);
            $utilisateur->setDateNaissanceUtilisat($ligne->DATENAISSANCEUTILISAT);
            $utilisateur->setAdresseElecUtilisat($ligne->ADRESSEELECUTILISAT);

            return $utilisateur;
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function delete(utilisateur $utilisateur) {

        try {
            $this->open();
            $sql = "DELETE FROM `utilisateur` WHERE IDUTILISAT=?";

            $prep = $this->pdo->prepare($sql);

            $prep->bindValue(1, $utilisateur->getIdUtilisat(), PDO::PARAM_INT);
            $prep->execute();
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function update(utilisateur $utilisateur) {
        try {
            $this->open();
            $sql = "UPDATE `utilisateur` SET PSEUDOUTILISAT= ?, NOMUTILISAT=?, MOTDEPASSEUTILISAT=?, ADRESSEUTILISAT = ?, CODEPOSTALUTILISAT=?, ADRESSEELECUTILISAT=?,SEXE=?,DATENAISSANCEUTILISAT=? WHERE IDUTILISAT=?";

            $prep = $this->pdo->prepare($sql);

            $prep->bindValue(1, $utilisateur->getPseudoUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(2, $utilisateur->getNomUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(3, $utilisateur->getMotdePasseUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(4, $utilisateur->getAdresseUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(5, $utilisateur->getCodePostalUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(6, $utilisateur->getAdresseElecUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(7, $utilisateur->getSexe(), PDO::PARAM_STR);
            $prep->bindValue(8, $utilisateur->getDateNaissanceUtilisat(), PDO::PARAM_STR);
            $prep->bindValue(9, $utilisateur->getIdUtilisat(), PDO::PARAM_INT);


            $prep->execute();
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function exist($pseudo) {
        $this->open();
        $query = "SELECT * FROM utilisateur WHERE PSEUDOUTILISAT='$pseudo';";
        $statement = $this->pdo->query($query);
        return $statement->rowCount();
    }

}

